#ifndef UTILS_H
#define UTILS_H

#include <QObject>
#include <QMetaEnum>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QColor>
#include <QImage>
#include <QUrl>
#include <QFont>
#include <QDateTime>
#include <QTime>
#include <QFile>
#include <QFileInfo>
#include <QDir>
#include <QThread>
#include <QTimer>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QStackedLayout>
#include <QWidget>
#include <QFrame>
#include <QDebug>

/*
    工具函数库
*/
namespace Utils
{
    //JSON/字符串互转
    QString qJsonValueToQString(const QJsonValue& value);
    QJsonValue qStringToQJsonValue(const QString str);

    //随机数
    QVector<int> randomNum(int min,int max,int count);

    //时间
    QString currentDateTime();
    QString currentTime();

    //确保路径path存在
    bool makesurePathExists(const QString& path);

    //遍历目录
    QVector<QFileInfo> listDir(QDir dir,bool recursion=false);

    //设置图片颜色
    void setImageColor(QImage& image,QColor color);

    //转化标准颜色值
    QString toStandardColor(QString colorStr);

    //枚举转字符串，T（枚举类型，必须已注册到元对象系统），value（值）
    template<typename T>
    QString enumToString(int value){
        QMetaEnum metaEnum  = QMetaEnum::fromType<T>();
        if(metaEnum.isValid()){
            return QString(metaEnum.valueToKey(value));
        }
        return "";
    }

    bool hasFont(const QString& font);
}

#endif
